package cn.iocoder.yudao.module.pmp.controller.admin.project.vo;

import cn.iocoder.yudao.framework.common.validation.InEnum;
import cn.iocoder.yudao.module.crm.enums.common.CrmSceneTypeEnum;
import lombok.*;
import java.util.*;
import io.swagger.v3.oas.annotations.media.Schema;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import java.math.BigDecimal;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;

import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;

@Schema(description = "管理后台 - 项目登记分页 Request VO")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class ProjectPageReqVO extends PageParam {

    @Schema(description = "项目名称", example = "张三")
    private String name;

    @Schema(description = "项目编号")
    private String projcetNo;

    @Schema(description = "客户编号", example = "16987")
    private Long customerId;

    @Schema(description = "商机编号", example = "28972")
    private Long businessId;

    @Schema(description = "合同编号", example = "6111")
    private Long contractId;

    @Schema(description = "最后跟进时间")
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
    private LocalDateTime[] contactLastTime;

    @Schema(description = "项目经理编号", example = "31032")
    private Long ownerUserId;

    @Schema(description = "工作流编号", example = "23971")
    private String processInstanceId;

    @Schema(description = "审批状态", example = "2")
    private Integer auditStatus;

    @Schema(description = "进场日期")
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
    private LocalDateTime[] jcDate;

    @Schema(description = "开始时间")
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
    private LocalDateTime[] startTime;

    @Schema(description = "结束时间")
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
    private LocalDateTime[] endTime;

    @Schema(description = "项目金额", example = "8571")
    private BigDecimal projcetPrice;

    @Schema(description = "整单折扣")
    private BigDecimal discountPercent;

    @Schema(description = "项目状态", example = "2")
    private String projcetStatus;

    @Schema(description = "是否提前进场")
    private Integer sftqjc;

    @Schema(description = "提前进场日期")
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
    private LocalDateTime[] tqjcDate;

    @Schema(description = "商务负责人", example = "28514")
    private Long signUserId;

    @Schema(description = "项目简介", example = "你猜")
    private String remark;

    @Schema(description = "创建时间")
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
    private LocalDateTime[] createTime;

    @Schema(description = "场景类型", example = "1")
    @InEnum(CrmSceneTypeEnum.class)
    private Integer sceneType; // 场景类型，为 null 时则表示全部

}
